#ifndef VISBASELAYOUT_H
#define VISBASELAYOUT_H

#include <QObject>
#include <QList>
#include <QPointer>
#include <QDebug>
#include <QApplication>


class VisBaseElement;

class VisBaseLayout : public QObject
{
    Q_OBJECT
public:
    VisBaseLayout(QObject *parent = 0);
    VisBaseLayout(QList< QPointer< VisBaseElement > > elements, QObject *parent = 0);
    //virtual VisBaseLayout( const VisBaseLayout& other );
    
    void addElement( QPointer< VisBaseElement > e );
    void addElements( QList< QPointer <VisBaseElement> > e );

    QList< QPointer <VisBaseElement> > getElements() const {return elementsToLayout;}

    void clear();

signals:
    void trackProgress(int stepsComplete);
    void finished();
    void error( QString err );

public slots:
    virtual void process();

protected:
    QList< QPointer < VisBaseElement > > elementsToLayout;
    
};

#endif // VISBASELAYOUT_H
